package A_review.re2_21;

import listNodePractice.ListNode;

import java.util.Stack;

public class Class445 {

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
         //TODO:2024/2/21   需要先入栈
        if(l1 == null  || l2 == null) return null;
        // 栈保存数据
        Stack<Integer> s1 = new Stack<Integer>();
        Stack<Integer> s2 = new Stack<Integer>();
        ListNode p = l1;
        // 入栈
        while(p != null){
            s1.push(p.val);
            p = p.next;
        }
        p = l2;
        while(p != null){
            s2.push(p.val);
            p = p.next;
        }


 //TODO:2024/2/21 注意链表指针的用法
         ListNode  ans = new ListNode(-1);
        p=ans;
        int sum=0;
        while (!s1.isEmpty()||!s2.isEmpty()){
            sum=sum/10;
            if (!s1.isEmpty()){
                sum+= s1.pop();
            }
            if (!s2.isEmpty()){
                sum+= s2.pop();
            }
            ListNode node = new ListNode(sum % 10);
            node.next=p.next;
            p.next=node;
        }

        if (sum/10==1){
            ListNode listNode = new ListNode(1);
                listNode.next=p.next;
                p.next=listNode;
        }

        return  ans.next;

    }
}
